package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	fmt.Println("file")
	// 创建文件
	f1, err := os.Create("f1.txt")
	if err != nil {
		fmt.Println("文件创建失败", err)
		return
	}
	fmt.Println(f1)

	// 打开文件
	f2, err := os.Open("test.txt") // 默认以只读方式打开文件
	if err != nil {
		fmt.Println("文件打开失败", err)
		return
	}
	fmt.Println(f2)

	// 读取、写入 文件
	f3, err := os.OpenFile("test1.txt", os.O_WRONLY, 777)
	if err != nil {
		fmt.Println("文件打开失败", err)
		return
	}

	// 读
	r := ""
	for {
		b := make([]byte, 1024)
		n, err := f2.Read(b)
		if err == io.EOF {
			fmt.Println("文件读取完毕", err)
			break
		}
		r += string(b[:n])
	}
	fmt.Println(r)

	// 写
	f3.Write([]byte("write\n"))
	f3.WriteString("write string\n")

	// 关闭文件
	f3.Close()
	// 关闭文件一般写在文件打开的后面用 defer
	defer f1.Close()
	defer f2.Close()

}
